package com.sunday.common.netty.e3_Pojo.server;

import com.sunday.common.netty.e3_Pojo.UnixTime;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;


public class TimeEncoder extends MessageToByteEncoder<UnixTime> {
    @Override
    protected void encode(ChannelHandlerContext ctx, UnixTime msg, ByteBuf out) {
        out.writeInt((int) msg.value());
    }
}

///**
// * 现在，唯一缺少的部分是编码器，它是 ChannelOutboundHandler 的实现，用于将回传转换为 ByteBuf。
// * 这比编写解码器要简单得多，因为在对消息进行编码时无需处理数据包碎片和汇编。UnixTime
// */
//public class TimeEncoder extends ChannelOutboundHandlerAdapter {
//    @Override
//    public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {
//        UnixTime m = (UnixTime) msg;
//        ByteBuf encoded = ctx.alloc().buffer(4);
//        encoded.writeInt((int)m.value());
//        /**
//         * 这一行中有很多重要的事情。
//         * 首先，我们按原样传递原始的 ChannelPromise，以便 Netty 在编码数据实际写出到网络上时将其标记为成功或失败。
//         * 其次，我们没有打电话给.有一个单独的处理程序方法，用于重写操作。ctx.flush() void flush(ChannelHandlerContext ctx) flush()
//         */
//        ctx.write(encoded, promise); // (1)
//    }
//}